package com.baseLesson._03_io;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
/**
 * 第一 文件类操作
 * 代码抽取为方法的快捷键：shift +alt + m
 * @author xiaoxu
 *
 */
public class _01_FileDemo {

    public static void main(String[] args) {
        //表示一个文件或者目录
        File file = new File("data/test");

        //创建文件
        createFile(file);

        //删除文件
		//file.delete();

        //获取文件信息
        //getFileInfo(file);


        //文件夹遍历
        //dirTraverse(file);


        dirOperation();

    }

    private static void dirOperation() {
        File dir = new File("data/test/1/2/3/5/a.txt");
        //创建单个文件夹
        //boolean isSuccess = dir.mkdir();
        //创建多个文件夹
        //boolean isSuccess = dir.mkdirs();

        //System.out.println(isSuccess);
          //修改文件名
        //dir.renameTo(new File("data/test/1/2/3/5"));
        //移动文件功能
        boolean renameTo = dir.renameTo(new File("data/test1/a.txt"));
        System.out.println(renameTo);
    }

    private static void dirTraverse(File file) {
        //判断是否为文件夹
        System.out.println("是否是文件夹： "+file.isDirectory());
        //list() 列出当前文件夹中所有的【文件名】
        String[] fileNames = file.list();
        System.out.println("fileNames: "+Arrays.toString(fileNames));

        //listFiles() 列出当前文件夹中所有的【文件对象】
        File[] files = file.listFiles();
        for (File f : files) {

            System.out.println("文件名： "+f.getName());
            System.out.println("abstract相对路径： "+f.getPath());
            System.out.println("绝对路径： "+f.getAbsolutePath());
            System.out.println("文件字节数： "+f.length());
            System.out.println("是否是隐藏文件： "+f.isHidden());
            System.out.println("文件是否可读： "+f.canRead());
            System.out.println("文件最后修改时间： "+f.lastModified());

            Date date = new Date(f.lastModified());
            DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd  HH:mm:ss");
            String dateStr = dateFormat.format(date);
            System.out.println("文件最后修改时间： "+dateStr);

            System.out.println("---------------------");
        }
    }

    private static void getFileInfo(File file) {
        System.out.println("文件名： "+file.getName());
        System.out.println("文件相对路径： " + file.getPath());
        System.out.println("文件绝对路径： "+file.getAbsolutePath());
    }


    private static void createFile(File file) {
        if(file.exists()) {
            System.out.println("该文件夹已存在！");
        }else {
            try {
                file.createNewFile();
                System.out.println("文件创建成功！");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

